是通訊中的一種方式,主要用來處理客戶端與伺服器端之串連,只需要protocol、IP、Port三項目即可進行網路串連。
import socket
欄位類別 | 名稱宣告 | 解釋內容 |
---|---|---|
family | socket.AF_UNIX | 於本機端進行串接 |
socket.AF_INET | 於伺服器與伺服器之間進行串接 | |
socket.AF_INET6 | 使用IPv6於伺服器與伺服器之間進行串接 | |
type | socket.SOCK_STREAM | 使用TCP(資料流)的方式提供可靠、雙向、串流的通信頻道 |
socket.SOCK_DGRAM | 使用UDP()的方式通用的免連線訊息交換通道 |
socket變數名稱 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP宣告
socket變數名稱 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP宣告
socket變數名稱.bind(("127.0.0.1",8888))
socket變數名稱.listen(5)
client,addr = socket變數名稱.accept() #client存串接對象、addr存連線資訊
socket變數名稱.connect("127.0.0.1",80)
socket變數名稱.send("hello!")
socket變數名稱.recv(200)
socket變數名稱.sendto("hello!",("127.0.0.1",80))
data,addr = socket變數名稱.recvfrom(200)
socket變數名稱.close()
import socket
bind_ip = "0.0.0.0"
bind_port = 9999
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((bind_ip,bind_port))
server.listen(5)
print "[*] Listening on %s:%d " % (bind_ip,bind_port)
while True:
client,addr = server.accept()
print 'Connected by ', addr
while True:
data = client.recv(1024)
print "Client recv data : %s " % (data)
client.send("ACK!")
import socket
HOST = '0.0.0.0'
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
cmd = raw_input("Please input msg:")
s.send(cmd)
data = s.recv(1024)
print "server send : %s " % (data)
一開始server端先打開等待接收,當client端執行後會,server會顯示連線的IP與port
從client端輸入資料傳送後,server端收到資料並發送ACK!,client端可收到ACK,並等待使用者輸入下一個要傳送的資料